package plp.orientadaObjetos2.cabecalho.pacote;

import java.io.File;

import plp.orientadaObjetos2.cabecalho.RightExpression;
import plp.orientadaObjetos2.memoria.AmbienteCompilacaoOO2;
import plp.orientadaObjetos2.parser.OO2Parser;

public class DecPacote {
	
	private RightExpression nomePacote;
	
	public DecPacote(RightExpression nomePacote) {
		this.nomePacote = nomePacote;
	}
	
	public DecPacote(String nomePacote) {
		this.setNomePacote(nomePacote);
	}
	public String getNomePacote(){
		return this.nomePacote.getValor();
	}

	// Converte uma string "a.b.c" em um hierarquia com a classe RightExpression
	public void setNomePacote(String nome){
		String[] lista = nome.split("[.]");
		if(lista.length > 1){
			this.nomePacote = new RightExpression(lista[lista.length-1]);
			for(int i = lista.length-2; i >= 0; i--){
				this.nomePacote = new RightExpression(lista[i],this.nomePacote);
			}
		}else{
			this.nomePacote = new RightExpression(nome);
		}
	}	

	public boolean checarTipo(AmbienteCompilacaoOO2 ambiente){
		boolean retorno = true;
		if(!new File(OO2Parser.CAMINHO_RAIZ + File.separator + this.getNomePacote().replace('.', '\\')).exists()){
			throw new RuntimeException("Pacote " + this.getNomePacote() + " nao encontrada para o arquivo corrente");
		}
		return retorno;
	}
}



